package com.hy.service;


import com.hy.medicine.MedicineOrder;
import com.hy.medicine.OrderItem;
import com.hy.medicine.dingdan.dto.OrderCreateDTO;

import java.util.List;

/**
 * 订单服务接口
 */
public interface OrderService {

    /**
     * 创建订单
     * @param orderCreateDTO 订单创建DTO
     * @return 订单ID，如果创建失败则返回null
     */
    String createOrder(OrderCreateDTO orderCreateDTO);

    /**
     * 获取订单详情
     * @param orderId 订单ID
     * @return 订单详情
     */
    MedicineOrder getOrderById(String orderId);

    /**
     * 获取用户的订单列表
     * @param userId 用户ID
     * @param status 订单状态，null则查询所有状态
     * @return 订单列表
     */
    List<MedicineOrder> getOrdersByUserId(Long userId, Integer status);

    /**
     * 获取订单的所有订单项
     * @param orderId 订单ID
     * @return 订单项列表
     */
    List<OrderItem> getOrderItems(String orderId);

    /**
     * 取消订单
     * @param orderId 订单ID
     * @param userId 用户ID(用于安全检查)
     * @return 是否成功
     */
    boolean cancelOrder(String orderId, Long userId);

    /**
     * 支付订单
     * @param orderId 订单ID
     * @param paymentType 支付方式
     * @return 是否成功
     */
    boolean payOrder(String orderId, String paymentType);

    /**
     * 更新订单状态
     * @param orderId 订单ID
     * @param status 新状态
     * @return 是否成功
     */
    boolean updateOrderStatus(String orderId, Integer status);
}
